package com.localking.algorithm.leetcode.array

/**
 * Given a non-empty array of digits representing a non-negative integer, plus one to the integer.
 * The digits are stored that the most significant digit is at the head of the list, and each element in the array contain a single digit.
 * You may assume the integer dose not contain any leading zero, except the number 0 itself.
 *
 * Example 1:
 * Input: [1, 2, 3]
 * Output: [1, 2, 4]
 * Explanation: The array represents the integer 123.
 *
 * Example 2:
 * Input: [4, 3, 2, 1]
 * Output: [4, 3, 2, 2]
 * Explanation: The array represents the integer 4321.
 *
 * @author jinbo
 */
object PlusOne_66 {
  def main(args: Array[String]): Unit = {
    val digits: Array[Int] = Array(7,2,8,5,0,9,1,2,9,5,3,6,6,7,3,2,8,4,3,7,9,5,7,7,4,7,4,9,4,7,0,1,1,1,7,4,0,0,6)
    println(plusOne(digits).mkString("[", ", ", "]"))
  }

  def plusOne(digits: Array[Int]): Array[Int] = {
    for(i <- digits.length - 1 to 0 by -1) {
      if(digits(i) != 9) {
        digits(i) = digits(i) + 1
        return digits
      }
      digits(i) = 0
    }
    1 +: digits
  }
}
